linux系统下常用磁盘管理命令――dd命令的使用技巧 | 您所在的位置:网站首页 › linux dd命令创建文件 › linux系统下常用磁盘管理命令――dd命令的使用技巧 |
dd命令用于复制文件并对原文件的内容进行转换和格式化处理。dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果。用的比较多的还是用dd来备份裸设备。但是不推荐,如果需要备份oracle裸设备,可以使用rman备份,或使用第三方软件备份,使用dd的话,管理起来不太方便。
功能:转换和复制文件。 语法:dd[option=value]… 说明:该命令把指定的输入文件复制到指定的输出文件中,并且在复制过程中可以进行格式转换。该命令还可以指定输入块和输出块的大小。系统默认使用标准输入文件和标准输出文件。 命令行中各选项采用“选项=值”的形式。其含义如下: if=file 输入文件名,默认值是标准输入文件。 of=file 输出文件名;默认值是标准输出文件。如果没有指定选项 conv=notrunc,则该选项会覆盖已有的文件。 ibs=n 输入块的大小为n个字节(默认值一般为1024字节)。 obs=n 输出块的大小为n个字节(默认值一般为1024字节)。 bs=n 同时设置输入块和输出块的大小,取代ibs和obs。如果没有指定进行转换,则这样进行设置是非常有效的。 cbs=n 转换时用的缓冲区大小。 skip=n 从n+1个记录开始进行复制(这些记录实际上被读过,但没有输出)。 seek=n 在进行复制之前,从输入文件的开头向后查寻n个记录。 lseek=n 与seek相同,但lseek是检查n个记录,并不读它们。 files=n 指定要连接在一起的输入文件个数(通常仅用于磁带操作)。 conv=n 只复制n个输入记录。 conv=ASCI 把EBCDIC码转换为ASCI码。 conv=ebcdic 把ASCI码转换为EBCDIC码。 conv=immap 输入必须是普通文件或者块特别服务。 conv=mmap 输入和输出都必须是普通文件或者块特别服务。 conv=ucase 把字母转换为大写。 conv=lcase 把字母转换为小写。 conv=swab 交换每对字节。 conv=noeror 出错时不停止处理。 conv=notrunc 不截短输出文件。dd保留输出文件中的原有盘块。 conv=sync 把每个输入记录的大小都调到ibs的大小。 conv=…,… 由逗号隔开的多个转换组合。 linux dd命令的应用实例 1.将本地的/dev/hdb整盘备份到/dev/hdd #dd if=/dev/hdb of=/dev/hdd 2.将/dev/hdb全盘数据备份到指定路径的image文件 #dd if=/dev/hdb of=/root/image 3.将备份文件恢复到指定盘 #dd if=/root/image of=/dev/hdb 4.备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径 #dd if=/dev/hdb | gzip > /root/image.gz 5.将压缩的备份文件恢复到指定盘 #gzip -dc /root/image.gz | dd of=/dev/hdb 6.备份与恢复MBR 备份磁盘开始的512个字节大小的MBR信息到指定文件: #dd if=/dev/hda of=/root/image count=1 bs=512 count=1指仅拷贝一个块;bs=512指块大小为512个字节。 恢复: #dd if=/root/image of=/dev/had 将备份的MBR信息写到磁盘开始部分 7.备份软盘 #dd if=/dev/fd0 of=disk.img count=1 bs=1440k (即块大小为1.44M) 8.拷贝内存内容到硬盘 #dd if=/dev/mem of=/root/mem.bin bs=1024 (指定块大小为1k) 9.拷贝光盘内容到指定文件夹,并保存为cd.iso文件 #dd if=/dev/cdrom(hdc) of=/root/cd.iso 10.增加swap分区文件大小 第一步:创建一个大小为256M的文件: #dd if=/dev/zero of=/swapfile bs=1024 count=262144 第二步:把这个文件变成swap文件: #mkswap /swapfile 第三步:启用这个swap文件: #swapon /swapfile 第四步:编辑/etc/fstab文件,使在每次开机时自动加载swap文件: /swapfile swap swap default 0 0 11.销毁磁盘数据 #dd if=/dev/urandom of=/dev/hda1 注意:利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。 12.测试硬盘的读写速度 #dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file #dd if=/root/1Gb.file bs=64k | dd of=/dev/null 通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。 13.确定硬盘的最佳块大小: #dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file #dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file #dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file #dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file 通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。 14.修复硬盘: #dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda 当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数 据起死回生。并且这个过程是安全、高效的。 15.利用netcat远程备份 #dd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234 在源主机上执行此命令备份/dev/hda #netcat -l -p 1234 | dd of=/dev/hdc bs=16065b 在目的主机上执行此命令来接收数据并写入/dev/hdc #netcat -l -p 1234 | bzip2 > partition.img #netcat -l -p 1234 | gzip > partition.img 以上两条指令是目的主机指令的变化分别采用bzip2、gzip对数据进行压缩,并将备份文件保存在当前目录。 16.将一个大视频文件的第i个字节的值改成0x41(大写字母A的ASCII值) #echo A | dd of=bigfile seek=$i bs=1 count=1 conv=notrunc 17.建立linux虚拟盘,用文件模拟磁盘 在进行linux的实验中,如果没有多余的硬盘来做测试。则可以在linux下使用文件来模拟磁盘,以供测试目的。 其模拟过程如下所示,摘录自《Oracle数据库核心技术与实务详解-教你如何成为Oracle 10g OCP》一书。 1)以root用户创建一个ASM磁盘所在的目录。 # mkdir –p /u01/asmdisks 2)通过dd命令创建6个400M大小的文件,每个文件代表一块磁盘。 [root@book u01]# cd asmdisks [root@book asmdisks]# dd if=/dev/zero of=asm_disk1 bs=1024k count=400 [root@book asmdisks]# dd if=/dev/zero of=asm_disk2 bs=1024k count=400 [root@book asmdisks]# dd if=/dev/zero of=asm_disk3 bs=1024k count=400 [root@book asmdisks]# dd if=/dev/zero of=asm_disk4 bs=1024k count=400 [root@book asmdisks]# dd if=/dev/zero of=asm_disk5 bs=1024k count=400 [root@book asmdisks]# dd if=/dev/zero of=asm_disk6 bs=1024k count=400 3)将这些文件与裸设备关联。 [root@book asmdisks]# chmod 777 asm_disk* [root@book asmdisks]# losetup /dev/loop1 asm_disk1 [root@book asmdisks]# losetup /dev/loop2 asm_disk2 [root@book asmdisks]# losetup /dev/loop3 asm_disk3 [root@book asmdisks]# losetup /dev/loop4 asm_disk4 [root@book asmdisks]# losetup /dev/loop5 asm_disk5 [root@book asmdisks]# losetup /dev/loop6 asm_disk6 注意:如果要删除通过dd模拟出的虚拟磁盘文件的话,直接删除模拟出的磁盘文件(也就是asm_disk1、asm_disk2…asm_disk6)还不够,还必须执行losetup -d /dev/loopN,在这里N从1到6。否则,磁盘文件所占用的磁盘空间不能释放 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |